package algorithm.middle;

import java.awt.im.spi.InputMethod;
import java.util.ArrayList;
import java.util.List;

/**
 * 设计一个使用单词列表进行初始化的数据结构，单词列表中的单词 互不相同 。 如果给出一个单词，请判定能否只将这个单词中一个字母换成另一个字母，使得所形成的新单词存在于你构建的字典中。
 * <p>
 * 实现 MagicDictionary 类：
 * <p>
 * MagicDictionary() 初始化对象
 * void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构，dictionary 中的字符串互不相同
 * bool search(String searchWord) 给定一个字符串 searchWord ，判定能否只将字符串中 一个 字母换成另一个字母，使得所形成的新字符串能够与字典中的任一字符串匹配。如果可以，返回 true ；否则，返回 false 。
 */
public class MagicDictionary676 {
    List<String> list;


    public MagicDictionary676() {
        list  = new ArrayList<>();
    }

    public void buildDict(String[] dictionary) {
        for (String str:dictionary){
            list.add(str);
        }
    }

    public boolean search(String searchWord) {
        for (String word:list){
            if (word.length()==searchWord.length()){
                //单词长度相同，进一步判断
                int a = 0;
                for (int i = 0; i<word.length();i++){
                    if (searchWord.charAt(i)!=word.charAt(i)){
                        a++;
                        if (a>1) break;
                    }
                }
                if (a==1) return true;
            }
        }
        return false;
    }
}
